"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/11/5 13:33
@Description :  python高阶语法
闭包
   在函数嵌套的前提下，内部函数使用了外部函数的变量，并且外部函数返回了内部函数，我们把这个使用了外部变量的内部函数叫做闭包
优点
- 无需定义全局变量即可实现通过函数，持续的访问、修改某个值
- 闭包使用的变量的作用域在函数内，难以被错误的调用修改
缺点
- 由于内部函数持续引用外部函数的值,所以会导致这一部分内存空间不被释放,一直占用内存

"""

total = 0
# 数据的累加
def fn_sum(num):
    # 使用全局的total
    global total
    total += num
    return total

fn_sum(1)
fn_sum(2)
fn_sum(3)
# 数据安全隐患
total = 20
fn_sum(4)
print(total)

# 闭包
def fn_sum_new():
    total = 0
    def inner(num):
        nonlocal total
        total += num
        return total
    return inner

# function
fn_inner = fn_sum_new()
# inner(num)
fn_inner(1)
fn_inner(2)
fn_inner(3)
result = fn_inner(4)
print(result)